Перейти к основному содержимому
Версия: 1.0

Описание агента

Функциональные особенности агента

  • Возможность настройки работы агента при помощи конфигурационного файла;
  • Встроенный планировщик, позволяющий настраивать расписание загрузки фидов;
  • Трансформация и фильтрация полученных данных;
  • Поддержка различных форматов вывода данных (CSV, TXT, Kafka);
  • Возможность интеграций с СЗИ;
  • Возможность настройки способа получения данных:
    • Полная выгрузка всех данных при каждой загрузке.
    • Загрузка только изменений с предыдущего обновления для экономии ресурсов и оперативного получения новых фидов.

Компоненты агента

Агент состоит из четырех основных сущностей:

  1. input (источник данных, generator) - запрашивает данные из облака;
  2. transform (преобразователь данных, map) - фильтрует поток данных по заданному условию или преобразует в требуемый формат;
  3. sink (потребитель данных) - сохраняет преобразованный поток в необходимом формате, например, в файл;
  4. service (сервис интеграции) – загружает результаты работы агента в СЗИ.

Генераторы

Все входные компоненты (inputs) агента наследуются от базового класса AgentGenerator, который позволяет настроить работу компонента по расписанию (cron) и сохранять состояние работы в SQLite. Среди них реализованы следующие компоненты:

  1. IndicatorsGenerator - получение коллекций индикаторов из TI Feeds;
  2. FeedStreamGenerator - получение индикаторов конкретного фида из TI Feeds;
  3. FeedsGenerator - получение индикаторов из фидов TI Feeds;
  4. DomainCategoriesGenerator - получение категорий доменов TI Feeds.

Фильтры

Компоненты типа transform выполняют преобразование и фильтрацию входных данных по условиям на основе их свойств. Среди них реализованы следующие компоненты:

  1. IndicatorsFilter - фильтрует поток входящих индикаторов по условию, заданному в формате expr-lang;
  2. DomainCategoriesFilter - фильтрует поток входящих категорий доменов по условию, заданному в формате expr-lang.

Мапперы

Компоненты типа transform, выполняют преобразование входных данных в выходной формат «ключ-значение». Среди них реализованы следующие компоненты:

  1. IndicatorsTextMap - преобразует входной поток индикаторов в данные необходимого формата с возможностью преобразования результата с помощью выражений в формате expr-lang, и его расширений на агенте;
  2. DomainCategoriesTextMap - преобразует входной поток категорий доменов в данные необходимого формата с возможностью преобразования результата с помощью выражений в формате expr-lang, и его расширений на агенте.

Потребители данных

Компоненты типа sink, выполняет передачу данных в необходимом выходном формате, например, сохранение в файл или передача данных во внешнюю систему. Среди них реализованы следующие компоненты:

  1. IndicatorsTextSink - сохраняет поток предварительно обработанных индикаторов в CSV или TXT файл;
  2. DomainsTextSink - сохраняет поток предварительно обработанных категорий доменов в CSV или TXT файл;
  3. TicKafkaSink – записывает данные в Apache Kafka;
  4. TelemetrySink – отправляет данные в телеметрию TI Feeds.

Сервисы интеграции

Сервисы интеграции – это встроенные в sink компоненты, реализующие логику интеграции агента с внешними системами, передающие результаты работы sink во внешнюю систему. Все сервисы имеют базовую конфигурацию для подключения к интегрируемому серверу по его адресу, порту и требуемому типу аутентификации (basic, bearer, token) с возможностью настройки протокола общения (HTTP/HTTPS) и возможностью отключения проверки SSL-сертификата. Реализованы сервисы интеграции со следующими системами:

  1. Kaspersky Cybertrace
  2. PT NAD
  3. MISP
  4. RuSIEM
  5. Usergate NGFW

Остальные интеграции реализованы через загрузку файла, сформированного агентом. Загрузка этого файла осуществляется средствами внешней системы или напрямую, без использования агента.

Взаимодействие компонентов

В конфигурационном файле агента из перечисленных выше компонентов формируется один или несколько потоков выполнения программы, которые представляют собой отдельные pipeline. В каждом конфигурируемом pipeline компоненты обязательно должны быть связаны в следующем порядке:
Input -> Filter (Transform) -> Map (Transform) -> Sink + Service

  • Input (Generator) всегда является началом любого pipeline, источником данных для обработки;
  • Filter является опциональным, но может находится только перед Map. Filter и Map являются подвидом Transform, поэтому с точки зрения объявления в конфигурационном файле они идентичны;
  • Sink всегда завершает pipeline, а опционально встроенный в него Service использует результаты работы pipeline.

Структура pipeline не обязательно должна быть линейной: несколько разных генераторов могут передавать данные в одну и ту же map, или из одной map данные могут дублироваться в разные sink.
При сохранении результатов работы в файл рекомендуется использовать линейную структуру pipeline из-за потенциальных проблем с синхронизацией сохранения текущего состояния, вызванных асинхронной природой работы агента. Эта проблема особенно актуальна для режима получения обновлений, где сохранение состояния играет решающую роль.
В таких случаях рекомендуется для каждого sink создавать отдельный pipeline с соотношением количества генераторов и sink 1:1.